#ifndef ___fat32_cache_recolectar_sectores_no_escritos

#define ___fat32_cache_recolectar_sectores_no_escritos 1

#include "f32_cchd.c"
#include "f32_lbpe.c"
#include "f32_ltr.c"
#include "f32_trnf.c"

void fat32_escribir_sectores_pendientes_cache(void);

void fat32_escribir_sectores_pendientes_cache (void) {
  fat32_lista_bloques_para_escribir * lbpe = malloc(sizeof(fat32_lista_bloques_para_escribir));
  fat32_operar_sobre_lista_bloques_para_escribir(FAT32_LBPE_CREAR, lbpe, 0, 0, 0, NULL);
  unsigned char vacio = 1;
  while (fat32_lista_pendientes_escritura) {
    vacio = 0;
    fat32_sector_pendiente_escritura * ds = fat32_lista_pendientes_escritura;
    fat32_lista_pendientes_escritura = ds -> siguiente;
    unsigned long bloque = (ds -> sector) & ~3L;
    unsigned short posicion = 512 * ((ds -> sector) & 3);
    fat32_operar_sobre_lista_bloques_para_escribir(FAT32_LBPE_ESCRIBIR, lbpe, bloque, posicion, 512, ds -> datos);
    free(ds);
  }
  if (vacio) {
    free(lbpe);
    return;
  }
  fat32_crear_transaccion(&fat32ctr_escribir_lista_pendientes, &lbpe, sizeof lbpe);
}

#endif